package com.ushine.web.template.authority.service;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ushine.web.base.model.system.UserDO;
import com.ushine.web.component.exception.ServiceException;
import com.ushine.web.template.authority.model.StaffDO;

import java.util.List;

/**
 * @Author: yls
 * @Date 2022/2/9 15:54
 * @Description: 数据权限测试 service 层
 * @Version 1.0
 **/
public interface IStaffService extends IService<StaffDO> {

    /**
     * 功能描述:
     * 〈 查询员工数据：带数据隔离权限 〉
     *
     * @return : java.util.List<com.ushine.web.web.authority.model.StaffDO>
     * @author : yls
     * @date : 2022/2/9 16:01
     */
    List<StaffDO> listStaffsByThread();

    /**
     * 功能描述:
     * 〈 查询员工数据：带数据隔离权限 〉
     *
     * @param
     * @return : java.util.List<com.ushine.web.web.authority.model.StaffDO>
     * @author : yls
     * @date : 2022/2/9 16:01
     */
    List<StaffDO> listStaffs();

    /**
     * 功能描述:
     * 〈查询员工数据：带数据隔离权限，多线程〉
     *
     * @param user 用户信息
     * @return : java.util.List<com.ushine.web.web.authority.model.StaffDO>
     * @author : yls
     * @date : 2022/3/8 15:49
     */
    List<StaffDO> listStaffsByThread(UserDO user);

    /**
     * 功能描述:
     * 〈 添加员工数据 〉
     *
     * @param staff 员工数据
     * @return : java.lang.Boolean
     * @author : yls
     * @date : 2022/2/9 16:06
     */
    Boolean insertStaff(StaffDO staff);

    /**
     * 功能描述:
     * 〈 更新员工数据 〉
     *
     * @param staff 员工数据
     * @return : java.lang.Boolean
     * @author : yls
     * @date : 2022/02/23 16:35
     */
    Boolean updateStaff(StaffDO staff);


    /**
     * 功能描述:
     * 〈更新员工信息〉
     *
     * @param updateWrapper 更新表达式
     * @return : java.lang.Boolean
     * @throws ServiceException 服务端自定义异常
     * @author : yls
     * @date : 2022/3/8 14:51
     */
    Boolean updateStaffByWrapper(Wrapper<StaffDO> updateWrapper) throws ServiceException;

    /**
     * 功能描述:
     * 〈 测试全表删除 〉
     *
     * @param
     * @return : java.lang.Boolean
     * @author : yls
     * @date : 2022/02/21 14:11
     */
    Boolean deleteAllStaff();


}
